<?php

class Loja {
    private $idLoja;
    private $cidade;
    private $estado;
    private $logradouro;
    private $complemento;
    private $fone1;
    private $fone2;
    private $nome;
    
    const NOME_MODULO = "Loja";
    
    public function getIdLoja() {
        return $this->idLoja;
    }

    public function setIdLoja($idLoja) {
        $this->idLoja = $idLoja;
    }

    public function getCidade() {
        return $this->cidade;
    }

    public function setCidade($cidade) {
        $this->cidade = $cidade;
    }

    public function getEstado() {
        return $this->estado;
    }

    public function setEstado($estado) {
        $this->estado = $estado;
    }

    public function getLogradouro() {
        return $this->logradouro;
    }

    public function setLogradouro($logradouro) {
        $this->logradouro = $logradouro;
    }

    public function getComplemento() {
        return $this->complemento;
    }

    public function setComplemento($complemento) {
        $this->complemento = $complemento;
    }

    public function getFone1() {
        return $this->fone1;
    }

    public function setFone1($fone1) {
        $this->fone1 = $fone1;
    }

    public function getFone2() {
        return $this->fone2;
    }

    public function setFone2($fone2) {
        $this->fone2 = $fone2;
    }

    public function getNome() {
        return $this->nome;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }
    
    /**
     * Retorna uma lista de lojas
     * @return Loja[] lojas
     */
    public static function listar(){
        $lojas = array();
        $conn = Connection::getConnection();
                
        $rs = $conn->query("SELECT * FROM loja");
        
        while($linha = $rs->fetch_assoc()){
            $lojas[] = self::arrayParaLoja($linha);
        }
        return $lojas;
    }
    /**
     * Retorna um loja conforme o id passado
     * @param int id
     * @return Loja
     */
    public static function consultar($id){
        $loja = null;
        $conn = Connection::getConnection();
        
        $rs = $conn->query("SELECT * FROM loja WHERE idLoja = $id");
        
        $linha = $rs->fetch_assoc();
        //se foi encontrado o registro
        if($linha){
           $loja = self::arrayParaLoja($linha);
        }
        return $loja;
    }
    public function alterar(){
            $conn = Connection::getConnection();
            //Seto o valor do idCidade, se não tiver seto 0
            $idCidade = isset($this->cidade) ?  $this->cidade : 0;
            //var_dump($idCidade);die();
            
            if ($idCidade == null){
                $cidade = new Cidade();
                $cidade->setIdCidade($idCidade);
            }  else {
                $cidade = Cidade::consultar($idCidade); 
                
            }
            

            $rs = $conn->prepare("UPDATE loja SET  cidade = ?, logradouro = ?, complemento = ?, fone1 = ?
                                 , fone2 = ?, nome = ? WHERE idLoja = ?");
            $rs->bind_param("issiisi", $cidade->getIdCidade(), $this->logradouro, $this->complemento, $this->fone1, 
                          $this->fone2, $this->nome, $this->getIdLoja());
                          
            return $rs->execute();
    }
    public function inserir($cidade){
            $conn = Connection::getConnection();
            
            $rs = $conn->prepare("INSERT INTO loja SET idCidade = ?, logradouro = ?, complemento = ?, fone1 = ?
                                 , fone2 = ?, nome = ?");
            
	          $rs->bind_param("issiis", $cidade->getIdCidade(), $this->logradouro, $this->complemento, $this->fone1, 
                          $this->fone2, $this->nome);
              
            return $rs->execute();       
            
    }
    public function excluir($id){
            $conn = Connection::getConnection();

            $rs = $conn->prepare("DELETE FROM loja  WHERE idLoja= ?");
            $rs->bind_param("d", $id);
            
            return $rs->execute();

    }
    public static function obtemIdPorEmailCliente($email){
        $conn = Connection::getConnection();
        
        $rs = $conn->query("SELECT * FROM loja WHERE email = '$email'");
        
        $linha = $rs->fetch_assoc();
        
        return $linha;
    }


    /**
     * Tranforma a linha de uma consulta na tabela usuario em um objeto usuario
     * @param type $linha linha de uma consulta a tabela usuario
     */
    public static function arrayParaLoja($linha){
        $loja = new Loja();
        $loja->idLoja = isset($linha["idLoja"]) ? $linha["idLoja"] : null;
        $loja->cidade = isset($linha["idCidade"]) ? $linha["idCidade"] : null;
        $loja->estado = isset($linha["uf"]) ? $linha["uf"] : null;
        $loja->complemento = isset($linha["complemento"]) ? $linha["complemento"] : null;
        $loja->logradouro = isset($linha["logradouro"]) ? $linha["logradouro"] : null;
        $loja->fone1 = isset($linha["fone1"]) ? $linha["fone1"] : null;
        $loja->fone2 = isset($linha["fone2"]) ? $linha["fone2"] : null;
        $loja->nome = isset($linha["nome"]) ? $linha["nome"] : null;
        
        return $loja;
    }

    public static function listaLojaPorNome($nomeLoja, $pesquisaExata = false) {
        $lojas = array();
        $conn = Connection::getConnection();
        if($pesquisaExata == true){        
            $rs = $conn->query("SELECT * FROM loja WHERE nome = '$nomeLoja' ORDER BY nome ASC");
        } else {
            $rs = $conn->query("SELECT * FROM loja WHERE nome LIKE '$nomeLoja%' ORDER BY nome ASC");
        }
        while($linha = $rs->fetch_assoc()){
            $lojas[] = self::arrayParaLoja($linha);
        }
        return $lojas;

    }
    


}

?>
